/** @file PowerBoard.cpp
 *  @author Lukáš Michalík
 *  @version 1.0.0
 *  @date 16.4.2013
 */

/* Includes ------------------------------------------------------------------*/
#include "wiringPi.h"
//#include "stdio.h"
//#include "stdlib.h"
#include "stdint.h"
//#include "errno.h"
#include "string.h"
#include "PowerBoard.hpp"
#include "HelloWorld.hpp"


/** @addtogroup RaspBerryPi_Power_Control
  * @{
  */

/** @defgroup Board_Control
  * @brief RaspBerryPi extended board driver modules
  * @{
  */

/* Private macro -------------------------------------------------------------*/
/* Private variables ---------------------------------------------------------*/
/* Private function prototypes -----------------------------------------------*/
/* Private functions ---------------------------------------------------------*/

/** @defgroup Board_Rele_Private_Functions
  * @{
  */


/**
 * @brief Přepne relé do sepnutého stavu.
 * @param void
 * @return           default 0
 */
int PowerBoardON(void) {


		 wiringPiSetupGpio();
		 pinMode (RELEPINON, OUTPUT);


		 digitalWrite(RELEPINON, 1);
		 delay(500);
		 digitalWrite(RELEPINON, 0);



		 return (2);

}
/**
 * @brief Přepne relé do rozepnutého stavu.
 * @param void
 * @return           default 0
 */
int PowerBoardOFF(void) {

			wiringPiSetupGpio();
			 pinMode (RELEPINOFF, OUTPUT);


			 digitalWrite(RELEPINOFF, 1);
			 delay(500);
			 digitalWrite(RELEPINOFF, 0);


			 return (3);

}

/**
 * @brief Na dvacet sekund přepne relé do rozepnutého
 *  stavu a poté jej vrátí do sepnutého stavu.
 * @param void
 * @return           default 0
 */
void PowerBoardRESET (void){

PowerBoardOFF();
delay(20000);
PowerBoardON();
}

/**
 * @brief Ovládá info diodu na výkonové desce.
 * @param stav Rožne nebo zhasne diodu:
 * 	@arg 1: rozsvítí
 * 	@arg 0: zhasne
 * @param dioda Definuje výběr diody (na desce je LED0 a LED1)
 * 	@arg 1: LED1
 * 	@arg 0: LED0
 * @return none
 *  */
void PowerBoardLed (uint8_t stav, uint8_t dioda){

	wiringPiSetupGpio();
	if (dioda)
	{
		pinMode (POWERLED1, OUTPUT);
	}
	else
	{
		pinMode (POWERLED0, OUTPUT);
	}


	if (dioda) {
		if (stav) {
			digitalWrite(POWERLED1PIN, 1);
		} else {
			digitalWrite(POWERLED1PIN, 0);
		}
	} else {
		if (stav) {
			digitalWrite(POWERLED0PIN, 1);
		} else {
			digitalWrite(POWERLED0PIN, 0);
		}
	}
}

/**
  * @}
  */

/**
  * @}
  */

/**
  * @}
  */
